package com.xframe.xdal.core.annotation;


import com.xframe.xdal.core.constant.AutoFillType;
import com.xframe.xdal.core.constant.OperateMark;

import java.lang.annotation.*;

/**
 * 对象标识注解
 *
 * @author xufeng
 * @version 1.0
 * @date 2022-09-19
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(value = AutoFills.class)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface AutoFill {
    /**
     * 自动填充类型
     */
    AutoFillType value() default AutoFillType.Value;
    /**
     * 默认值
     */
    String defVal() default "";
    /**
     * 附加参数
     */
    String args() default "";
    /**
     * 自定义填充的类型
     */
    String type() default "";
    /**
     * 是否强制覆盖值，写入时候是否判断是否为空值,
     */
    boolean overwrite() default false;
    /**
     * 自动填充的时机 Create = 写入数据库 R = 从数据库中读出 U = 更新到数据库
     */
    int operateMark() default OperateMark.Create;
    /**
     * 排序
     */
    int order() default 0;

}
